Detection of obstructions

ABSTRACT

A system and method for detecting obstructions. The system includes a camera coupled to a vehicle and configured to capture image data from a vehicle, and a computing device that includes a processor configured to: detect an edge of a roadway on which the vehicle is traveling; detect objects located proximate an edge of the roadway, based on the captured image data; determine a location of each detected object, based on the captured image data; calculate a distance between each detected object and the edge of the roadway; determine that at least one object of the detected objects is an obstruction, based on at least the calculated distance between each object of the at least one object and the edge of the roadway being below a threshold; and transmit a message to an external device, said message indicating the location of each detected object determined to be an obstruction.

TECHNICAL FIELD

The present invention relates to detecting obstructions, and morespecifically, but not exclusively, to detecting obstructions proximate aroadway from a vehicle.

BACKGROUND

Safely entering an intersection while driving requires clear visibilityto avoid hazardous or dangerous situations. Obstructions to a vehicle'svisibility can increase the chance of collisions between vehicles,bicycles and pedestrians by forcing drivers and automated vehicles tounsafely move into an intersection until oncoming traffic can bedetected. Construction sites, temporary displays, vegetation and snowpile-up (e.g., from snow plows), and the like can serve as obstructionsthat limit visibility along the edges of roadways.

SUMMARY

A system, and associated method and computer program product, fordetecting obstructions. The system includes a camera configured tocapture image data from a vehicle, and a computing device that includesa processor configured to: detect an edge of a roadway on which thevehicle is traveling; detect objects located proximate an edge of theroadway, based on the captured image data; determine a location of eachdetected object, based on the captured image data; calculate a distancebetween each detected object and the edge of the roadway; determine thatat least one object of the detected objects is an obstruction, based onat least the calculated distance between each object of the at least oneobject and the edge of the roadway being below a threshold; and transmita message to an external device, said message indicating the location ofeach detected object determined to be an obstruction.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts a block diagram of an example computing system that candetect obstructions, in accordance with embodiments of the presentinvention.

FIG. 2 is a process flow diagram of an example method that can detectobstructions, in accordance with embodiments of the present invention.

FIG. 3 is an example illustration of a roadway and proximate objects, inaccordance with embodiments of the present invention.

FIG. 4 depicts a computer-readable hardware storage medium or hardwarestorage device that may store software which upon being executed candetect obstructions, in accordance with embodiments of the presentinvention.

DETAILED DESCRIPTION

Techniques described herein provide a system for detecting obstructionsand reporting any detected obstructions to an external device. Anobstruction, as described herein, can include any suitable object thatis within a predetermined distance from the edge of a roadway and/or anyobject that has a size or shape that limits the visibility of a driver.In some embodiments, the predetermined distance can be calculated basedon a sight line, bylaws, and topography, etc. For example, thepredetermined distance can indicate an area along the edge of a roadwaythat is to remain free from obstructions (also referred to herein asobstacles) to enable vehicles (e.g., automobiles, trucks, etc.)approaching an intersection to have a sufficient amount of visibility toenter the intersection. In some embodiments, the techniques describedherein can be used to detect obstructions to a driver's visibility atany suitable point along a roadway regardless of whether an intersectionis nearby. In some examples, the external device can include a databaseor cloud service. The external device can be monitored and can dispatcha service provider to address or remove a detected obstruction.

FIG. 1 depicts a block diagram of an example computing system 150 thatcan detect obstructions. The computing system 150 includes a computingdevice 100, one or more input/output (I/O) devices 110, a display device114, a network 118, and an external computing device 120.

The computing device 100 may be, for example, a server, desktopcomputer, laptop computer, tablet computer, or smartphone. In someexamples, the computing device 100 may be a cloud computing node. Thecomputing device 100 may be described in the general context of computersystem executable instructions, such as program modules, being executedby a computer system. Generally, program modules may include routines,programs, objects, components, logic, data structures, and so on thatperform particular tasks or implement particular abstract data types.The computing device 100 may be practiced in distributed cloud computingenvironments where tasks are performed by remote processing devices thatare linked through a communications network. In a distributed cloudcomputing environment, program modules may be located in both local andremote computer system storage media including memory storage devices.

The computing device 100 may include a processor 102 that is configuredto execute stored instructions, and a memory device 104 to providetemporary memory space for operations of said instructions duringoperation. The processor can be a single-core processor, multi-coreprocessor, computing cluster, or any number of other configurations. Thememory 104 can include random access memory (RAM), read only memory,flash memory, or any other suitable memory systems.

The processor 102 may be connected through a system interconnect 106(e.g., PCI®, PCI-Express®, etc.) to n input/output (I/O) deviceinterface 108 configured to connect the computing device 100 to the oneor more I/O devices 110. The I/O devices 110 may include, for example, akeyboard and a pointing device, wherein the pointing device may includea touchpad or a touchscreen, etc. The I/O devices 110 may be built-incomponents of the computing device 100, or may be devices that areexternally connected to the computing device 100.

The processor 102 may also be linked through the system interconnect 106to a display interface 112 configured to connect the computing device100 to a display device 114. The display device 114 may include adisplay screen that is a built-in component of the computing device 100.The display device 114 may also include a computer monitor, television,or projector, etc., that is externally connected to the computing device100. In addition, a network interface controller (NIC) 116 may beconfigured to connect the computing device 100 through the systeminterconnect 106 to the network 118 In some embodiments, the NIC 116 cantransmit data using any suitable interface or protocol, such as theinternet small computer system interface, etc. The network 118 may be acellular network, a radio network, a wide area network (WAN), a localarea network (LAN), or the Internet, etc. An external computing device120 may connect to the computing device 100 through the network 118. Insome examples, external computing device 12.0 may be an externalwebserver. In some examples, external computing device 120 may be acloud computing node.

The processor 102 may also be linked through the system interconnect 106to a storage device 122 that can include a hard drive, an optical drive,a USB flash drive, an array of drives, or any combinations thereof. Insome examples, the storage device 122 a include a mapping module 124, anobstruction module 126, and a warning module 128. The mapping module 124can detect an edge of a roadway on which a vehicle is traveling anddetect a plurality of objects located proximate the edge of the roadwaybased on captured image data. Image data, as referred to herein, caninclude any data related to a location, orientation, position, and sizeof an object. In some embodiments, the obstruction module 126 cancalculate a distance between each object and the edge of the roadway anddetermine that at least one of the objects is an obstruction based inpart on the distance between at least one of the objects and the edge ofthe roadway being below a specified or predetermined threshold. In sonicembodiments, the obstruction module 126 can also determine a shape andsize of an object proximate the edge of a roadway. In some examples, thewarning module 128 can transmit a message to an external device (e.g.,the external coupling device 120), wherein the message indicates alocation of each object determined to be an obstruction.

The scope of an object “proximate” the edge of a roadway is governed, atleast in part, by the object being a visual obstruction that impairsvisibility, from a vehicle (e.g., automobiles, trucks, etc.) on theroadway or entering the roadway, of other vehicles (e.g., automobiles,trucks, bicycles, etc.) and/or pedestrians.

In some embodiments, the computing device 100 can be located in anautomated vehicle and the warning module 128 can indicate to theexternal computing device 120 that the automated vehicle cannot navigatean intersection, or any other suitable portion of a roadway, due to anobstruction proximate an edge of a roadway. In some embodiments, thecomputing device 100, or more specifically the storage device 122, canalso include a database 130 that stores data corresponding to a streetlayout for a region, a global positioning satellite (GPS) sensor 132, acamera 134, and a spatial range finder 136. In some examples, the camera134 can capture data, such as photographs and/or video, of thesurrounding environment when the computing device 100 approaches anintersection. In some examples, the computing device 100 can use datafrom the GPS sensor 132 and the database 130 to detect when thecomputing device 100 approaches an intersection. For example, the GPSsensor 132 can indicate the position of the computing device 100 basedon information received from a plurality of global positioningsatellites and the database 130 can indicate surrounding roadways basedon the position from the GPS sensor 132. Once the computing device 100reaches a specific distance from an intersection, the range finder 126can scan the area around the intersection and use data captured by thecamera 134 to determine if there are obstructions that block the visionof a perpendicular street. In some embodiments, obstructions can bedetected along any portion of a roadway. In some examples, the rangefinder 136 can calculate a distance between each object and the edge ofthe roadway. In some embodiments, the range finder 136 can be replacedwith a system of cameras that can detect depth. In one embodiment, thedata from the GPS sensor 132, the range finder 136, and the camera 134can be processed by the external computing device 120, such as acentralized server in a cloud service.

In some embodiments, the camera 134 can be mounted at a predeterminedlocation on a vehicle based on a ride height of the vehicle. The rideheight, as defined herein, is a distance between the base of a tire of avehicle and the underside of a chassis of the vehicle. In some examples,the camera 134 can be mounted at a location on a vehicle at a cameraheight equal to, or greater than, the sum of the ride height, the heightof the driver's seat above the underside of the chassis of the vehicle,and the average height of a driver above the driver's seat. Mounting acamera 134 at this camera height can enable the camera to capture datathat corresponds to what a driver may see which simulates a driver'sexperience. In some examples, a field of view of the camera 134 caninclude any suitable range and can exceed ninety degrees. In someembodiments, the camera 134 can move horizontally in relation to avehicle to capture image data from different heights. In someembodiments, the image data captured from different heights in one ormore vehicles can be aggregated locally at the computing device 100 orremotely at the external computing device 120 to provide additionalinformation pertaining to an object.

It is to be understood that the block diagram of FIG. 1 is not intendedto indicate that the computing device 100 is to include all of thecomponents shown in FIG. 1. Rather, the computing device 100 can includefewer or additional components not illustrated in FIG. 1 (e.g.,additional memory components, embedded controllers, modules, additionalnetwork interfaces, etc.). Furthermore, any of the functionalities ofthe mapping module 124, obstruction module 126, and warning module 128may be partially, or entirely, implemented in hardware and/or in theprocessor 102. For example, the functionality may be implemented with anapplication specific integrated circuit, logic implemented in anembedded controller, or in logic implemented in the processor 102, etc.In some embodiments, the functionalities of the mapping module 124, theobstruction module 126, and the warning module 128, can be implementedwith logic, wherein the logic, as referred to herein, can include anysuitable hardware (e.g., a processor, etc.), software (e.g., anapplication, etc.), firmware, or any suitable combination of hardware,software, and firmware.

In one embodiment, the computing device 100 of the present invention isa special purpose hardware device dedicated to detecting obstructions,due to an inclusion therein of special purpose hardware which mayinclude the GPS sensor 132, the camera 134 and/or the range finder 136.

FIG. 2 is a process flow diagram of an example method that can detectobstructions, in accordance with embodiments of the present invention.The method 200 can be implemented with any suitable computing device,such as the computing device 100 of FIG. 1.

At step 202, the mapping module 124 can detect an edge of a roadway onwhich a vehicle is traveling. For example, the mapping module 124 candetect environmental data that indicates characteristics of thesurrounding environment of a vehicle. In some examples, theenvironmental data can include information related to topography, roadconditions, and road surfaces, etc. In some embodiments, the mappingmodule 124 can detect the edge of the roadway by detecting a change inthe type of surface in the environmental data or by detecting a changein elevation of land surrounding the roadway.

At step 204, the mapping module 124 can detect a plurality of objectslocated proximate the edge of the roadway, based on captured image data.For example, the mapping module 124 can detect image data from anysuitable camera, range finder, or any combination thereof. The mappingmodule 124 can detect and identify objects located proximate the edge ofthe roadway by comparing depth information associated with the edge ofthe roadway and the location of the objects located proximate the edgeof the roadway. For example, the mapping module 124 can detect anynumber of objects that are located at a range that exceeds the edge of aroadway. In some examples, the mapping module 124 can request thatadditional data is to be collected for objects proximate the edge of aroadway. For example, the mapping module 124 can request that additionalvehicles collect image data of the same object or the mapping module 124can indicate that a camera or any other sensor is to move from a firstposition to a second position to capture image data from a differentperspective. In some embodiments, the image data from differentperspectives or heights can be aggregated to provide a more accuratelocation and size of an object.

At step 206, an obstruction module 126 can calculate a distance betweeneach detected object and the edge of the roadway. For example, theobstruction module 126 can detect the difference in range between thelocation of each detected object and the edge of the roadway. In someembodiments, the obstruction module 126 can detect the distance betweeneach detected object and the edge of a roadway based on information fromany suitable range finder, such as a laser based range finder, motionsensing device, radar, and the like.

At step 208, the obstruction module 126 can determine that at least oneobject of the detected objects is an obstruction, based in part on thedistance between at least one of the detected objects and the edge ofthe roadway being below a threshold. In some embodiments, the thresholdcan correspond to predetermined bylaws, sight lines, and any othersuitable information. For example, bylaws can indicate a minimumdistance to be enforced between the edge of a roadway and an object. Insome embodiments, the obstruction module 126 can detect a sight linethat is used to determine the threshold distance between the edge of aroadway and an object. For example, vehicles that approach and enter anintersection that intersects the roadway may need a minimum amount ofspace (also referred to herein as a sight line) between the edge of theroadway and objects proximate the edge in order to safely enter theintersection. In some examples, the sight line can be calculated basedon a speed limit of a street perpendicular to the roadway at theintersection and the topography of the area surrounding theintersection. For example, the sight line can indicate the amount ofspace proximate the edge of a roadway that is to be free of objects. Thesight line may increase based on higher speed limits, topography thatlimits the view of a vehicle, such as curves and hills, and the like.The obstruction module 126 can identify any object as an obstruction ifthe object resides within the sight line or within an area between theedge of the roadway and the distance from the edge that is to be free ofobjects.

In some embodiments, the obstruction module 126 can also identifyobjects as obstructions if the objects violate vertical restrictionsindicated by bylaws and sight lines. For example, if a height of anobject exceeds a predetermined height above ground level, the object maybe considered to be an obstruction. In some examples, fences and otherfixed objects that reside near the edge of a roadway can be consideredobstructions if the fences or fixed objects violate a height restrictionset forth in a bylaw or sight line.

At step 210, the warning module 128 can transmit a message to anexternal device, the message indicating a location of each detectedobject determined to be an obstruction. For example, the message caninclude global satellite positioning coordinates that correspond to thelocation of a detected object identified as an obstruction. In someembodiments, the message can be transmitted to any suitable externaldevice such as a database, a server in a cloud service, or any otherelectronic device. In some examples, the message can also includeinformation related to the sensors that captured the image data. Forexample, the message can also include information such as the rideheight of the vehicle capturing the image data, the height of the cameraand any other sensors located on the vehicle, velocity information ofthe vehicle, and/or global satellite information of the vehicle, etc.

The process flow diagram of FIG. 2 is not intended to indicate that theoperations of the method 200 are to be executed in any particular order,or that all of the operations of the method 200 are to be included inevery case. Additionally, the method 200 can include any suitable numberof additional operations. For example, in some embodiments, theobstruction module 126 can filter objects identified proximate the edgeof a roadway and are in motion. For example, the obstruction module 126can detect that an object is in motion, which indicates that the objectis not located in a fixed position. Accordingly, the object maycorrespond to an individual, an animal, or another vehicle such as abicycle, and the like. In some embodiments, the obstruction module 126can detect bylaw infractions based on a detected obstruction.

In some embodiments, the obstruction module 126 can modify an operationof a vehicle based obstruction. For example, the obstruction module 126can stop the vehicle for a predetermined period of time, limit theacceleration of the vehicle as the vehicle enters an intersection, issuea warning to a driver and relinquish control of a vehicle to the driver,and the like.

FIG. 3 is an example illustration of a roadway and proximate objects, inaccordance with embodiments of the present invention. The environment300 surrounding vehicle 302 can include any suitable number of roadways304 and 306. In some embodiments, the vehicle 302 can include anysuitable computing device, such as the computing device 100 of FIG. 1.In some examples, the computing device 100 in the vehicle can detectobstructions 308 proximate the roadways approached by the vehicle 302 inwhich the computing device 100 is located. For example, the computingdevice 100 can determine a minimum threshold distance corresponding to adistance from the edge of a roadway that is to be free of obstructions.As discussed above, maintaining an area free of obstructions proximatethe edge of a roadway can enable the computing device 100 to detectvehicles approaching the intersection on roadway (e.g., a perpendicularroadway).

In some embodiments, the computing device 100 can detect that a vehicleis approaching a perpendicular street 304 that is perpendicular tostreet 306, or an intersecting street that intersects a roadway at anypossible angle, and calculate a sight line based on a predeterminedspeed limit of the perpendicular street. In some examples, a sight linecan be modified based on a speed of the vehicle at a time the image datais captured. In some embodiments, the computing device 100 can collectthe image data from a plurality of sensors, such as cameras, rangefinders, and the like, at different heights on the vehicle and aggregatethe image data to detect a location and size (e.g, height) of anobstruction 308. Moreover, as discussed above, it is to be understoodthat computing device 100 can detect obstructions proximate a roadwayalong any portion of a road regardless of whether an intersection isnearby. For example, the computing device 100 can detect obstructionsalong a straight roadway, a curving roadway, and a roadway with achanging elevation or topography, and the like.

In one embodiment, the vehicle 302, which is moving along the roadway306 in a direction 320, approaches an intersection 310 where roadways306 and 304 intersect. The scope of “roadway” or “road” includes“street” or any other public path on which motorized vehicles (cars,trucks, motorcycles, etc.) may travel. In this embodiment, obstacles 308(e.g., fences, trees, etc.) may be detected, via the sensors discussedsupra, on one or more sides 311-318 proximate the intersection 310. Theobstacles can be both permanent and temporary obstructions such as aconstruction sites, signs, etc. The obstructions may cause an obstructedview from the vehicle 302. The computing system 150 is configured todetermine if an infraction has occurred due to the obstructions and/orobstructed view. The infraction may include a violation of a local bylawor state/provincial/federal law and if so, the computing system 150 maygenerate an alert for communicating the infraction to a pertinentrecipient (e.g., a government). For example, the alert may betransmitted to a government of a jurisdiction (e.g., town, city, county,state, etc.) having responsibility for intersection 310 and pertinentportions of the roadway/streets 306 and 304. In response to the alert,the government may dispatch a service provider (from within or fromoutside the government) to remove the obstructions and/or perform anaction with respect to the obstructed view. For example, the action maybe to modify the obstructions (e.g., if an obstruction is a tree, theaction may be a trimming of the branches of the tree to mitigate theobstructed view). The computing system 150 may receive a communication(e.g., from the government) that the government has dispatched theservice provider to remove the obstruction and/or perform the actionwith respect to the obstructed view.

FIG. 4 depicts a computer-readable hardware storage medium or hardwarestorage device 400 that may store software which upon being executed candetect obstructions, in accordance with embodiments of the presentinvention. The storage medium or device 400 may be accessed by aprocessor 402 over a computer interconnect 404. Furthermore, the storagemedium or device 400 may include program code to direct the processor402 to perform the operations of the current method.

The various software components discussed herein may be stored on thestorage medium or device 400, as indicated in FIG. 4. For example, amapping module 406 can detect an edge of a roadway on which a vehicle istraveling and detect a plurality of objects located proximate the edgeof the roadway based on captured image data. In some embodiments, anobstruction module 408 can calculate a distance between each detectedobject and the edge of the roadway and determine that at least one ofthe detected objects is an obstruction, based in part on the distancebetween at least one of the objects and the edge of the roadway beingbelow a specified or predetermined threshold. In some examples, awarning module 410 can transmit a message to an external device (e.g.,the external computing device 120), the message indicating a location ofeach detected object determined to be an obstruction.

It is to be understood that any number of additional software componentsnot shown in FIG. 4 may be included within the storage medium or device400, depending on the specific application.

The present invention improves the general technology of objectdetection, and more particularly the technology of detection of objectsproximate an edge of a roadway.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, Firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

A computer program product of the present invention includes one or morecomputer readable hardware storage devices having compute readableprogram code stored therein, said program code containing instructionsexecutable by one or more processors of a computing system (or computersystem) to implement the methods of the present invention.

A computing system (or computer system) of the present inventionincludes one or more processors, one or more memories, and one or morecomputer readable hardware storage devices, said one or more hardwarestorage devices containing program code executable by the one or moreprocessors via the one or more memories to implement the methods of thepresent invention.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

What is claimed is:
 1. A computing system for detecting obstructions,said computing system comprising: a camera coupled to a vehicle andconfigured to capture image data; and a computing device the includes aprocessor configured to: detect an edge of a roadway on which thevehicle is traveling, based on the captured image data; detect aplurality of objects located proximate the edge of the roadway, based onthe captured image data; determine a location of each detected object,based on the captured image data; calculate a distance between eachdetected object and the edge of the roadway; determine that at least oneobject of the detected objects is an obstruction, based on at least thecalculated distance between each object of the at least one object andthe edge of the roadway being below a threshold; and transmit a messageto an external device, said message indicating the location of eachdetected object determined to be an obstruction.
 2. The computing systemof claim 1, said computing system further comprising: a range finder to(i) calculate the distance between each detected object and the edge ofthe roadway and (ii) calculate a size and shape of each detected object.3. The computing system of claim 1, wherein the camera is mounted at apredetermined location on the vehicle based on a ride height of thevehicle.
 4. The computing system of claim 1, wherein a field of view ofthe camera exceeds ninety degrees.
 5. The computing system of claim 1,wherein the processor is configured to: determine that the vehicle isapproaching an intersecting street; and calculate a sight line based ona predetermined speed limit of pertaining to the intersecting street. 6.The computing system of claim 1, wherein the processor is configured to:collect the image data from a plurality of sensors distributed atdifferent heights on the vehicle; and aggregate the image data to detectthe location of each detected object.
 7. The computing system of claim5, wherein the threshold is based in part on the sight line, the sightline to be modified based on a speed of the vehicle at a time the imagedata is captured.
 8. The computing system of claim 1, wherein theobstruction is proximate an intersection where the roadway and a roadintersect, wherein the obstruction causes an obstructed view from thevehicle, wherein said to transmit the message comprises to transmit analert to the external device of a government of a jurisdiction havingresponsibility for the intersection, the roadway, and the road, andwherein the processor is configured to: determine that the obstructionand/or obstructed view is a violation of a law of the government; andreceive a communication indicating that the government has, in responseto the determination that the obstruction and/or obstructed view is aviolation of a law of the government, dispatched a service provider toremove the obstruction and/or perform an action with respect to theobstructed view.
 9. A method for detecting obstructions, said methodcomprising: detecting, by a processor of a computing device, an edge ofa roadway on which a vehicle is traveling, based on captured image data;detecting, by the processor, a plurality of objects located proximatethe edge of the roadway, based on the captured image data; determining,by the processor, a location of each detected object, based on thecaptured image data; calculating, by the processor, a distance betweeneach detected object and the edge of the roadway; determining, by theprocessor, that at least one object of the detected objects is anobstruction, based on at least the calculated distance between eachobject of the at least one object and the edge of the roadway beingbelow a threshold; and transmitting, by the processor, a message to anexternal device, said message indicating the location of each detectedobject determined to be an obstruction and a height of a camera whichcaptured the image data.
 10. The method of claim 9, said methodcomprising: calculating the distance between each detected object andthe edge of the roadway, based on depth data collected from a rangefinder.
 11. The method of claim 9, wherein the camera is mounted at apredetermined location on the vehicle based on a ride height of thevehicle.
 12. The method of claim 9, said method comprising: capturingthe image data from the camera's field of view that exceeds ninetydegrees.
 13. The method of claim 9, said method comprising determining,by the processor, that the vehicle is approaching an intersectingstreet; and calculating, by the processor, a sight line based on apredetermined speed limit pertaining to the intersecting street.
 14. Themethod of claim 9, said method comprising: collecting, by the processor,the image data from a plurality of sensors distributed at differentheights on the vehicle; and aggregating, by the processor, the imagedata to detect the location of each detected object.
 15. The method ofclaim 13, wherein the threshold is based in part on the sight line, thesight line to be modified based on a speed of the vehicle at a time theimage data is captured.
 16. The method of claim 9, wherein theobstruction is proximate an intersection where the roadway and a roadintersect, wherein the obstruction causes an obstructed view from thevehicle, wherein said transmitting the message comprises transmitting analert to the external device of a government of a jurisdiction havingresponsibility for the intersection, the roadway, and the road, andwherein the method comprises: determining, by the processor, that theobstruction and/or obstructed view is a violation of a law of thegovernment; and receiving, by the processor, a communication indicatingthat the government has, in response to the determination that theobstruction and/or obstructed view is a violation of a law of thegovernment, dispatched a service provider to remove the obstructionand/or perform an action with respect to the obstructed view.
 17. Acomputer program product, comprising a computer readable hardwarestorage device having computer readable program code stored therein,said program code containing instructions executable by a processor of asystem to implement a method for detecting obstructions, said methodcomprising: detecting, by the processor, an edge of a roadway on which avehicle is traveling, based on captured image data; detecting, by theprocessor, a plurality of objects located proximate the edge of theroadway, based on the captured image data; determining, by theprocessor, a location of each detected object, based on the capturedimage data; calculating, by the processor, a distance between eachdetected object and the edge of the roadway; determining, by theprocessor, that at least one object of the detected objects is anobstruction, based on at least the calculated distance between eachobject of the at least one object and the edge of the roadway beingbelow a threshold; transmitting, by the processor, a message to anexternal device, said message indicating the location of each detectedobject determined to be an obstruction; and modify, via the processor,an operation of the vehicle based on the obstruction.
 18. The computerprogram product of claim 17, said method comprising: determining, by theprocessor, that the vehicle is approaching an intersecting street; andcalculate, by the processor, a sight line based on a predetermined speedlimit pertaining to the intersecting street.
 19. The computer programproduct of claim 17, said method comprising: collecting, by theprocessor, the image data from a plurality of sensors distributed atdifferent heights on the vehicle; and aggregating, by the processor, theimage data to detect the location of each detected object
 20. Thecomputer program product of claim 17, wherein the obstruction isproximate an intersection where the roadway and a road intersect,wherein the obstruction causes an obstructed view from the vehiclewherein said transmitting the message comprises transmitting an alert tothe external device of a government of a jurisdiction havingresponsibility for the intersection, the roadway, and the road, andwherein the method comprises: determining, by the processor, that theobstruction and/or obstructed view is a violation of a law of thegovernment; and receiving, by the processor, a communication indicatingthat the government has, in response to the determination that theobstruction and/or obstructed view is a violation of a law of thegovernment, dispatched a service provider to remove the obstructionand/or perform an action with respect to the obstructed view.